package tools

import (
	"fmt"

	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
)

// 在其它model的实体类中可直接调用
var Db *gorm.DB

func init() {
	 
	// 读取配置文件
	db, err := gorm.Open("mysql", GetConfig().MysqlDns)

	if err != nil {
		fmt.Println("连接失败", err)
		panic(err)
	}

	// 设置连接池，空闲连接
	db.DB().SetMaxIdleConns(50)
	// 打开链接
	db.DB().SetMaxOpenConns(100)

	// 表明禁用后缀加s
	db.SingularTable(true)
	// 检测表是否存在，如果不存在则创建
	if !db.HasTable("zinc_index") {
		// db.CreateTable(&models.ZincIndex{})
		sql :=`
		CREATE TABLE zinc_index (
			id int(11) NOT NULL AUTO_INCREMENT,
			table_name varchar(255) DEFAULT NULL,
			table_id int(11) DEFAULT NULL,
			index_name varchar(255) DEFAULT NULL,
			index_id int(11) DEFAULT NULL,
			created_at timestamp NULL DEFAULT NULL,
			updated_at timestamp NULL DEFAULT NULL,
			PRIMARY KEY (id)
		  ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
		`
		err2 := db.Exec(sql).Error
		if err2 != nil {
			fmt.Println(err2)
			panic(err2)
		}
		
	}
	
	Db = db

}

func GetDB() *gorm.DB {
	return Db
}
